#pragma once

#include "PreProcDOM.hpp"

namespace CPreProc
{
  class IncludeDirective : public ControlLine
  {
  public:
    static Glib::RefPtr<IncludeDirective> parse(Tokenizer &tokenizer,bool directive_read);

    virtual void process(PreProcessorContext &context) const;

  private:
    IncludeDirective(Tokenizer &tokenizer,bool directive_read);

    enum Type
    {
      Type_Quoted,
      Type_AngularBrackets,
      Type_PPTokens,
    };
    Type type;

    Glib::ustring file_name;
    std::vector<Glib::ustring> pp_tokens;
  };
}

